/**
 * 防抖函数
 *
 * @export
 * @param {*} fn  函数
 * @param {*} delay   防抖时间
 * @returns
 */
export function debounce(fn, delay) {
  let timer = null;
  return function (...arg) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, arg);
    }, delay);
  };
}

// 示例
function debounce(fn, wait) {
  var timer = null;
  return function () {
    var context = this;
    var args = arguments;
    if (timer) {
      clearTimeout(timer);
      timer = null;
    }
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, wait);
  };
}

var fn = function () {
  console.log("boom");
};

setInterval(debounce(fn, 500), 1000); // 第一次在1500ms后触发，之后每1000ms触发一次

setInterval(debounce(fn, 2000), 1000); // 不会触发一次（我把函数防抖看出技能读条，如果读条没完成就用技能，便会失败而且重新读条）
